package org.extframework.ld.util;

import java.io.File;
import java.io.FileOutputStream;
import java.util.LinkedList;
import java.util.List;

/**
 * @author : Dong.Li
 * @created : 2013-1-17
 * @version : 1.0
 * @description :
 */
public class FileUtil {

	public static void appendFile(File file, String content) throws Exception {
		FileOutputStream fileOutputStream = new FileOutputStream(file, true);
		fileOutputStream.write(content.getBytes());
		fileOutputStream.flush();
		fileOutputStream.close();
	}

	public static void appendFile(String filePath, String content)
			throws Exception {
		appendFile(new File(filePath), content);
	}

	public static boolean isExist(File file) {
		return file.exists();
	}

	public static boolean isExist(String fileName) {
		return new File(fileName).exists();
	}

	public static void isExist(File file, boolean isMark) {
		if (isExist(file)) {
			return;
		}
		if (isMark)
			file.mkdirs();
	}

	public static void isExist(String fileName, boolean isMark) {
		File file = new File(fileName);
		isExist(file, isMark);
	}

	/**
	 * 在指定文件夹中获取后缀名为@param name 的文件 返回一个文件的集合对象
	 * 
	 * @param dirFile
	 * @param name
	 * @return
	 */
	public static boolean getFiles(List<File> files,File dirFile, String name) {
		LinkedList<File> dirsFiles = new LinkedList<File>();

		files.add(dirFile);
		for (File fe : dirFile.listFiles()) {
			if (fe.isDirectory()) {
				dirsFiles.add(fe);
			} else if (fe.getName().substring(fe.getName().lastIndexOf(".")+1, fe.getName().length()).equals(name) && !(files.contains(fe))) {
				files.add(fe);
			}
		}

		while (!(dirsFiles.isEmpty())) {
			for (File fe : ((File) dirsFiles.pop()).listFiles()) {
				if (fe.isDirectory()) {
					dirsFiles.add(fe);
				} else if (!(files.contains(fe))) {
					files.add(fe);
				}
			}
		}

		return true;
	}
	
}
